package com.desire.test;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;

public class _51_AtomicInteger操作 {

    // 参数默认值为0
    public static AtomicInteger count = new AtomicInteger();

    public static void inc() throws InterruptedException {
        Thread.sleep(1); //延迟1毫秒
        count.getAndIncrement();//count值自加1
    }


    public static void main(String[] args) throws InterruptedException {
        // 倒计时门闩 (闭锁)  100个
        final CountDownLatch latch = new CountDownLatch(100);
        // 循环启动100次  每一次count自增1
        for (int i = 0; i < 100; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        _51_AtomicInteger操作.inc();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    /*
                    .countDown()
                    减少闩锁的计数，如果计数为零，则释放所有等待线程。
                    如果当前计数大于零，则该计数将递减。
                    如果新计数为零，那么为了线程调度目的，将重新启用所有等待的线程。
                    如果当前计数等于零，那么什么也不会发生
                     */
                    latch.countDown();
                }
            }).start();
        }
        latch.await();
        System.out.println("运行结果：" + _51_AtomicInteger操作.count);
    }
}
